﻿<?php
// +----------------------------------------------------------------------
// | 快递鸟 物流轨迹即时查询
// +----------------------------------------------------------------------
// | API 参照：http://www.kdniao.com/api-track
// +----------------------------------------------------------------------
// | 即时查询API提供实时查询物流轨迹的服务，用户提供运单号和快递公司，即可查询当前时刻的最新物流轨迹。
// +----------------------------------------------------------------------
// +----------------------------------------------------------------------
// | xiegaolei 2017-04-10
// +----------------------------------------------------------------------

class Kdniao{
	
	//电商ID
	public $ebusinessId;
	
	//电商加密私钥
	public $appKey;
	
	//请求url
	public $reqUrl = 'http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx';
	 
 
	public function __construct($ebusinessId,$appKey){
		if (empty($ebusinessId) || empty($appKey)){
			die('请配置参数');
		}
		
		$this->ebusinessId = $ebusinessId;
		$this->appKey = $appKey;
	}
	
	/**
	 * Json方式 查询订单物流轨迹
	 * @param string $ShipperCode  快递公司编码 
	 * @param string $LogisticCode  物流单号
	 * @param string $OrderCode  订单编号
	 */
 	public function getOrderTracesByJson($ShipperCode,$LogisticCode,$OrderCode = ''){
		
		$requestData['ShipperCode']= $ShipperCode;
		$requestData['LogisticCode']= $LogisticCode;
		$requestData['OrderCode']= $OrderCode;
		
		$requestData = json_encode($requestData);
		$datas = array(
	        'EBusinessID' => $this->ebusinessId,
	        'RequestType' => '1002',
	        'RequestData' => urlencode($requestData) ,
	        'DataType' => '2',
	    );
	    $datas['DataSign'] = $this->encrypt($requestData, $this->appKey);
		$result=$this->sendPost($this->reqUrl, $datas);	
		return $result;
	}
	 
	/**
	 *  post提交数据 
	 * @param  string $url 请求Url
	 * @param  array $datas 提交的数据 
	 * @return url响应返回的html
	 */
	protected function sendPost($url, $datas) {
	    $temps = array();	
	    foreach ($datas as $key => $value) {
	        $temps[] = sprintf('%s=%s', $key, $value);		
	    }	
	    $post_data = implode('&', $temps);
	    $url_info = parse_url($url);
		if(empty($url_info['port']))
		{
			$url_info['port']=80;	
		}
	    $httpheader = "POST " . $url_info['path'] . " HTTP/1.0\r\n";
	    $httpheader.= "Host:" . $url_info['host'] . "\r\n";
	    $httpheader.= "Content-Type:application/x-www-form-urlencoded\r\n";
	    $httpheader.= "Content-Length:" . strlen($post_data) . "\r\n";
	    $httpheader.= "Connection:close\r\n\r\n";
	    $httpheader.= $post_data;
	    $fd = fsockopen($url_info['host'], $url_info['port']);
	    fwrite($fd, $httpheader);
	    $gets = "";
		$headerFlag = true;
		while (!feof($fd)) {
			if (($header = @fgets($fd)) && ($header == "\r\n" || $header == "\n")) {
				break;
			}
		}
	    while (!feof($fd)) {
			$gets.= fread($fd, 128);
	    }
	    fclose($fd);  
	    
	    return $gets;
	}
	
	/**
	 * 电商Sign签名生成
	 * @param data 内容   
	 * @param appkey Appkey
	 * @return DataSign签名
	 */
	protected function encrypt($data, $appkey) {
	    return urlencode(base64_encode(md5($data.$appkey)));
	}


}
 